package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.UserDao;
import com.cn.wanxi.dao.impl.UserImpl;
import com.cn.wanxi.dto.UserModelDto;
import com.cn.wanxi.model.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.IUserService;

public class UserServiceImpl implements IUserService {
    /**
     * 添加用户信息，需要考虑的是，第一：用户名是否存在 第二：不存在则存入数据库，存在则返回已经存在的信息
     *
     * @param userModel
     * @return
     */
    @Override
    public int add(UserModel userModel) {
        //调用数据实现层
        UserDao userDao = new UserImpl();
        if (findByName(userModel.getUsername()) == null) {
            return userDao.add(userModel);
        }
        return 0;
    }

    /**
     * 1.验证码不正
     * 2.用户名不正确
     * 3.密码不正确
     * 逻辑判断
     *
     * @param userModelDto
     * @return
     */
    @Override
    public ResultModel loginResult(UserModelDto userModelDto) {
        ResultModel resultModel = new ResultModel();
        if (!userModelDto.getCode().equals(userModelDto.getSessionCode())) {
            resultModel.setResult("验证码不正确，请重新输入验证码");
        } else {
//        这里需要去数据库查询用户名和密码是否正确
            UserModel userModel = new UserModel();
            userModel.setUsername(userModelDto.getUsername());
            userModel.setPassword(userModelDto.getPassword());
            if (findByUsernameAndPassword(userModel) == null) {
                //代表用户名不存在或者用户名和密码输入错误
                resultModel.setCode("400");
                resultModel.setResult("登录失败，请重新输入用户名和密码");
            } else {
                resultModel.setCode("200");
                resultModel.setResult("登录成功，即将跳转到管理页面");
            }
        }
        return resultModel;
    }

    /**
     * 直接查询单表数据user
     *
     * @param userModel
     * @return
     */
    public UserModel findByUsernameAndPassword(UserModel userModel) {
        UserDao userDao = new UserImpl();

        return userDao.findByUsernameAndPassword(userModel);
    }

    /**
     * 通过用户名查询数据库是否存在当前用户
     *
     * @param username
     * @return
     */
    public UserModel findByName(String username) {
        UserDao userDao = new UserImpl();

        return userDao.findByName(username);
    }
}

